<?php
/**
 * Clase Base FN para BasePoProveedorFN
 *
 * @package
 * @subpackage BasePoProveedorFN
 * @author     hans
 * @version    SVN:: BasePoProveedorFN.class.php,v 1.1 2012-03-17 18:14:46 Hans.parra Exp $
 */
 require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/po/proveedores/BN/PoProveedorBN.class.php');
class BasePoProveedorFN extends PoProveedorBN
{
  private static $fieldNames = array (
    'ProveedorId'=>'prv_proveedorId', 'Tipo'=>'prv_tipo', 'Nombre'=>'prv_nombre', 'DocIdent'=>'prv_docIdent', 'NacExt'=>'prv_nacExt', 'Direcc1'=>'prv_direcc1', 'Direcc2'=>'prv_direcc2', 'Cuidad'=>'prv_ciudad', 'Direccestado'=>'prv_direccEstado', 'Pais'=>'prv_pais', 'Telefono'=>'prv_telefono', 'Email'=>'prv_email', 'Contacto'=>'prv_contacto', 'TerminosPago'=>'prv_terminosPago', 'PlazoDiasPago'=>'prv_plazoDiasPago', 'InicioFecha'=>'prv_inicioFecha', 'Estado'=>'prv_estado', 'CreaUsr'=>'prv_creaUsr', 'ModifUser'=>'prv_modifUser', 'ModifFecha'=>'prv_modifFecha', 'CreaFecha'=>'prv_creaFecha'
  );

  public function select()
  {
    try
    {
          $o_conexion = new BaseDatos();
      $con=$o_conexion->conectar();
    	
      $tamPag = !property_exists($this, 'tamPag')?9999:$this->tamPag;
      $pagina = !property_exists($this, 'page')||$this->page==""?1:$this->page;
      $this->numeroRegistros = $this->selectNumRows();
      $limitInf = ($pagina-1)*$tamPag;
    	
      $where = $this->buildConsult();
      //$where = $this->buildConsult();
      //$orden = $this->buildOrderByField();

      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
      $sql = "SELECT prv_proveedorId, prv_tipo, prv_nombre, prv_docIdent, prv_nacExt, prv_direcc1, prv_direcc2, prv_ciudad, prv_direccEstado, prv_pais, prv_telefono, prv_email, prv_contacto, prv_terminosPago, prv_plazoDiasPago, prv_hold, prv_creditLimit, prv_inicioFecha, prv_estado, prv_creaUsr, prv_modifUser, prv_modifFecha, prv_creaFecha FROM po_proveedor WHERE 1 ".$where." ".$orden."  LIMIT ".$limitInf.",".$tamPag;
      //$sql = "SELECT prv_proveedorId, prv_tipo, prv_nombre, prv_docIdent, prv_nacExt, prv_direcc1, prv_direcc2, prv_ciudad, prv_direccEstado, prv_pais, prv_telefono, prv_email, prv_contacto, prv_terminosPago, prv_plazoDiasPago, prv_inicioFecha, prv_estado, prv_creaUsr, prv_modifUser, prv_modifFecha, prv_creaFecha FROM po_proveedor WHERE 1 ".$where;
        $result = mysql_query($sql);
      $num_rows = mysql_num_rows($result);
      $a_tmp = array();
      if($num_rows>0){
        while ($o_valor = mysql_fetch_object($result)) {
          $a_tmp[] = $this->insertObjectBN($o_valor);
        }
      }

      return count($a_tmp)>0?$a_tmp:null;
    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  public function selectNumRows()
  {
    try
    {
      $where = $this->buildConsult();

      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
      $sql = "SELECT prv_proveedorId, prv_tipo, prv_nombre, prv_docIdent, prv_nacExt, prv_direcc1, prv_direcc2, prv_ciudad, prv_direccEstado, prv_pais, prv_telefono, prv_email, prv_contacto, prv_terminosPago, prv_plazoDiasPago, prv_hold, prv_creditLimit, prv_inicioFecha, prv_estado, prv_creaUsr, prv_modifUser, prv_modifFecha, prv_creaFecha FROM po_proveedor WHERE 1 ".$where;
        $result = mysql_query($sql);
      $num_rows = mysql_num_rows($result);

      return $num_rows;
    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  public function buildConsult()
  {
    try
    {
      $where = "";

      if($this->getProveedorId()){ $where .= " AND prv_proveedorid = '".$this->getProveedorId()."'"; }
      if($this->getTipo()){ $where .= " AND prv_tipo = '".$this->getTipo()."'"; }
      if($this->getNombre()){ $where .= " AND prv_nombre like '".$this->getNombre()."%'"; }
      if($this->getDocIdent()){ $where .= " AND prv_docident = '".$this->getDocIdent()."'"; }
      if($this->getNacExt()){ $where .= " AND prv_nacext = '".$this->getNacExt()."'"; }
      if($this->getDirecc1()){ $where .= " AND prv_direcc1 = '".$this->getDirecc1()."'"; }
      if($this->getDirecc2()){ $where .= " AND prv_direcc2 = '".$this->getDirecc2()."'"; }
      if($this->getCuidad()){ $where .= " AND prv_ciudad = '".$this->getCuidad()."'"; }
      if($this->getDireccestado()){ $where .= " AND prv_direccestado = '".$this->getDireccestado()."'"; }
      if($this->getPais()){ $where .= " AND prv_pais = '".$this->getPais()."'"; }
      if($this->getTelefono()){ $where .= " AND prv_telefono = '".$this->getTelefono()."'"; }
      if($this->getEmail()){ $where .= " AND prv_email = '".$this->getEmail()."'"; }
      if($this->getContacto()){ $where .= " AND prv_contacto = '".$this->getContacto()."'"; }
      if($this->getTerminosPago()){ $where .= " AND prv_terminospago = '".$this->getTerminosPago()."'"; }
      if($this->getPlazoDiasPago()){ $where .= " AND prv_plazodiaspago = '".$this->getPlazoDiasPago()."'"; }
      if($this->getInicioFecha()){ $where .= " AND prv_iniciofecha = '".$this->getInicioFecha()."'"; }
      if($this->getHold()){ $where .= " AND prv_hold = '".$this->getHold()."'"; }      
      if($this->getCreditLimit()){ $where .= " AND prv_creditLImit = '".$this->getCreditLimit()."'"; }      
      if($this->getEstado()){ $where .= " AND prv_estado = '".$this->getEstado()."'"; }
      if($this->getCreaUsr()){ $where .= " AND prv_creausr = '".$this->getCreaUsr()."'"; }
      if($this->getModifUser()){ $where .= " AND prv_modifuser = '".$this->getModifUser()."'"; }
      if($this->getModifFecha()){ $where .= " AND prv_modiffecha = '".$this->getModifFecha()."'"; }
      if($this->getCreaFecha()){ $where .= " AND prv_creafecha = '".$this->getCreaFecha()."'"; }
      return $where;
    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  public function buildOrderByField()
  {
    try
    {
      $order_by = "";

      if(property_exists($this,'sortCampos')){
      if($this->sortCampos != ""){
        $a_valCampos = explode(";", $this->sortCampos);
        $a_valtype   = explode(";", $this->sortType);
        $order_by = " ORDER BY ";
        $a_order = array();
        foreach ($a_valCampos as $key => $val){
          $sTmpOrder = "";
          if(array_key_exists($val, self::$fieldNames)){
            $sTmpOrder .= self::$fieldNames[$val];
            switch ($a_valtype[$key]){
              case 1: $sTmpOrder .= " ASC"; break;
              case 2: $sTmpOrder .= " DESC"; break;
            }
            $a_order[] = $sTmpOrder;
          }
        }
        $order_by .= implode(", ", $a_order);
      }
      }
      return $order_by;
    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  /* B�squeda del registro por la llave primaria */
  public function selectByPK()
  {
    try
    {
      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
      $sql = "SELECT prv_proveedorId, prv_tipo, prv_nombre, prv_docIdent, prv_nacExt, prv_direcc1, prv_direcc2, prv_ciudad, prv_direccEstado, prv_pais, prv_telefono, prv_email, prv_contacto, prv_terminosPago, prv_plazoDiasPago, prv_hold, prv_creditLimit, prv_inicioFecha, prv_estado, prv_creaUsr, prv_modifUser, prv_modifFecha, prv_creaFecha FROM po_proveedor WHERE 1 AND prv_proveedorId='".$this->getProveedorId()."' ; ";
      $result = mysql_query($sql);
      $o_Propel = $result ? mysql_fetch_object($result) : null;


      return $o_Propel?$this->insertObjectBN($o_Propel):null;

    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  /* Devuelve un objeto con m�todos de acceso */
  private function insertObjectBN($o_propel){
    $o_BasePoProveedorFN = new PoProveedorBN();
    $o_BasePoProveedorFN->setProveedorId($o_propel->prv_proveedorId);
    $o_BasePoProveedorFN->setTipo($o_propel->prv_tipo);
    $o_BasePoProveedorFN->setNombre($o_propel->prv_nombre);
    $o_BasePoProveedorFN->setDocIdent($o_propel->prv_docIdent);
    $o_BasePoProveedorFN->setNacExt($o_propel->prv_nacExt);
    $o_BasePoProveedorFN->setDirecc1($o_propel->prv_direcc1);
    $o_BasePoProveedorFN->setDirecc2($o_propel->prv_direcc2);
    $o_BasePoProveedorFN->setCuidad($o_propel->prv_ciudad);
    $o_BasePoProveedorFN->setDireccestado($o_propel->prv_direccEstado);
    $o_BasePoProveedorFN->setPais($o_propel->prv_pais);
    $o_BasePoProveedorFN->setTelefono($o_propel->prv_telefono);
    $o_BasePoProveedorFN->setEmail($o_propel->prv_email);
    $o_BasePoProveedorFN->setContacto($o_propel->prv_contacto);
    $o_BasePoProveedorFN->setTerminosPago($o_propel->prv_terminosPago);
    $o_BasePoProveedorFN->setPlazoDiasPago($o_propel->prv_plazoDiasPago);
    $o_BasePoProveedorFN->setHold($o_propel->prv_hold);    
    $o_BasePoProveedorFN->setCreditLimit($o_propel->prv_creditLimit);        
    $o_BasePoProveedorFN->setInicioFecha($o_propel->prv_inicioFecha);
    $o_BasePoProveedorFN->setEstado($o_propel->prv_estado);
    $o_BasePoProveedorFN->setCreaUsr($o_propel->prv_creaUsr);
    $o_BasePoProveedorFN->setModifUser($o_propel->prv_modifUser);
    $o_BasePoProveedorFN->setModifFecha($o_propel->prv_modifFecha);
    $o_BasePoProveedorFN->setCreaFecha($o_propel->prv_creaFecha);
    return $o_BasePoProveedorFN;
  }
}